There exist applications that allows users to customize user interfaces. As one way of customizing a user interface, traditionally special combinations of keystrokes have been assigned to frequently-used commands. When a special combination of keystrokes is pressed, its corresponding command is fired to the application and the command is executed. Those special combinations of key strokes are often called “shortcut keys”. Typically, shortcut keys combine the Ctrl or Alt keys with some other keys.
A typical application presents command buttons to users in toolbars and menus. Command buttons allow users to select desired commands using a mouse or keyboard.
Any command button can have shortcut key assignment for the command that it represents. For example, a command for opening a new file is presented in a toolbar as a command button “File-New”, i.e., a “New” button is provided in a “File” menu. A user can set shortcut key Ctrl-N assignment to the new file opening command. This shortcut key assignment allows an alternative way to fire the new file opening command, rather than selecting the command button “File-New” from the toolbar or menu. When the user presses the shortcut key Ctrl-N, the shortcut key controller fires the new file opening command to the application which will create a new document. None of the “File-New” buttons are selected by the user, and the command is sent independently of any instance of the button in the user interface.
In addition to command buttons, applications typically provide other user interface items that do not have a command to fire. For example, a drop down listbox like a font selection list on a toolbar does not fire a command when it is selected; it simply lists a set of choices. An edit box as well does not fire a command, but allows the user to enter a value in the edit box. Also, popup menu items do not fire a command when selected, but show the submenu associated with them. These items which do not have a command to fire may be collectively called as “non-command user interface items” or simply “non-command items”.
There are a number of solutions that have been tried to deal with shortcut key assignments to these non-command user interface items. For example, some existing applications do not allow shortcut key assignments for non-command items. This is an inadequate solution since it reduces the customization potential of the user interface.
Some existing applications locate an instance of a non-command item on one of the visible toolbars and set the keyboard focus to it. This requires the user to look around the screen to find to which item the focus has been set. Once the focus has been set to the item, the user can then make use of it. This solution will not work if there is no instance of the non-command item on any of the visible toolbars.
Furthermore, some existing applications allow shortcut key assignments to the non-command items by bringing up a dialog that contains the item when the short cut key assignment is pressed. For example, if a shortcut key is set to a font drop down listbox item which changes the font typeface, pressing the shortcut key launches a font dialog which contains several font settings, one of them including a method to change the font typeface. This requires a full functioning dialog which can change the same setting that the item changes. It also slows the users down since they have to find where to change the setting in the dialog and then exit from the dialog.
Some applications use a combination of the above solutions. That is, if there is an instance of the non-command user interface item on one of the visible toolbars then focus is set to that item. If there isn't one visible, then the a settings modal dialog is brought up from which the setting can be changed. These applications still suffers from the same drawbacks described above.
It is therefore desirable to provide a mechanism that allows users to easily access non-command user interface items.